<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.编写一个函数，计算两个数字的和、差、积、商
        //  要求：使用传参的形式
        // function fn(a, b, type) {
        //     // 给type一个默认值 ”和“
        //     if(!type){
        //         type = "和";
        //     }
        //     var reslut;
        //     switch (type) {
        //         case '和':
        //            reslut = a+b;
        //             break;
        //         case '差':
        //             reslut = a-b;
        //             break;
        //         case '积':
        //           reslut = a*b;
        //             break;
        //         case '商':
        //             reslut = a/b
        //             break;
        //         default:
        //             console.log("输入错误");
        //         break;
        //     }
        //     console.log(reslut);
        // }
        // 定义type的值：和、差、积、商；
        // 10,3  --> (10-余数)/3=3;
        // type可以给默认值
        // 如果第三个参数没有给 那么  自动给第三个参数一个默认值 "和"
        // fn(4, 2);

        // 2.编写一个函数，计算三个数字的大小，按从小到大顺序输出 （选做）
        // function getNum(){
        //     // 假定第一个参数是最小值
        //     var min = arguments[0];
        //     var max = arguments[0];
        //     for(var i=0;i<arguments.length;i++){
        //         if(arguments[i]<min){
        //             min = arguments[i];
        //         }
        //         if(arguments[i]>max){
        //             max = arguments[i];
        //         }
        //     }
        //     // 遍历所有的参数  如果有一个值同时满足大于最小值 小于最大值那么这个值就是中间值
        //     // console.log(min,max);
        //     var center;  //中间值
        //     for(var i=0;i<arguments.length;i++){
        //         if(arguments[i]<max && arguments[i]>min){
        //             center = arguments[i];
        //         }
        //     }
        //     console.log(min,center,max);
        // }
        // getNum(30,10,60)

        // 同学代码参考一
        // function getnum(a,b,c) {
        //     var com;
        //     if (a < b) {
        //         com = a, a = b, b = com;
        //     }
        //     if (b < c) {
        //         com = b, b = c, c = com;
        //     }
        //     if (a < b) {
        //         com = a, a = b, b = com;
        //     }
        //     console.log(a, b, c);
        // }
        // getnum(2,9,4)

        // 参考二
        // function result() {
        //     for (var i = 0; i < arguments.length - 1; i++) {//第一轮用第一个值和后一个值做比较
        //         if (arguments.length == 1) {
        //             console.log(arguments[i]);
        //         }
        //         for (var j = 0; j < arguments.length - i - 1; j++) {//每次循环最后i行的循环是重复的，-i是为了减少循环冗杂
        //             if (arguments[j] > arguments[j + 1]) {
        //                 var temp = arguments[j];
        //                 arguments[j] = arguments[j + 1];
        //                 arguments[j + 1] = temp;
        //             }
        //         }
        //     }
        //     return arguments;
        // }
        // var res =  result(87, 45, 56, 98);
        // console.log(res);

        // 3.编写任意个数字的求和、差、积、商的函数

        // function getNum() {
        //     var type = arguments[0];
        //     if(!type){
        //         type = "和";
        //     }
        //     // if(type==='减' || type=='商'){
        //     //     var reslut = arguments[1];
        //     // }else if(type=='积' ){
        //     //     var reslut = 1;
        //     // }else{
        //     //     var relut = 0;
        //     // }
        //     var reslut = arguments[1];
            //  if(type=="商"){
            //      for(let i=1;i<arguments.length;i++){
            //         if( arguments[i]==0){
            //             console.log("输入错误");
            //             // 抛出错误
            //             throw new Error("输入错误");
            //         }
            //      }
            //  }
            //  throw new Error("输入错误");
        //     switch (type) {
        //         case '和':
        //             for (var i = 2; i < arguments.length; i++) {
        //                 reslut += arguments[i];
        //             }
        //             break;
        //         case '差':
        //             for (var i = 2; i < arguments.length; i++) {
        //                 reslut -= arguments[i];
        //             }
        //             break;
        //         case '积':
        //             for (var i = 2; i < arguments.length; i++) {
        //                 reslut *= arguments[i];
        //             }
        //             break
        //         case '商':
        //             for (var i = 2; i < arguments.length; i++) {
        //                 reslut /= arguments[i];
        //             }
        //             break
        //     }
        //     console.log(reslut);
        // }
        // getNum("商", 1, 2, 4, 6);

        // 拿到不定参数的最后一个参数
        // ---如何取到一个数组最后一位
        //练习： type放在最后一位实现：编写任意个数字的求和、差、积、商的函数
        function fn(){
          console.log(arguments[arguments.length-1]);
        }
        fn(1,2,4,"和");
        // 如何取到一个数组最后一位
        arr = ["张三","李四","王五","王小二"];
        //   arr[0]  arr[1] arr[2]  2--arr.length-2
        // 通过数组的长度 -1 = 数组最后一位下标 --->  最后一位
        console.log(arr[arr.length-1])
        // 思考：函数的参数可以是多种类型 ？ number  string 。。。 array 函数的参数能不能是函数？
        //  forEach  是一个函数  最终 我调用 forEach会出现以下结果
        forEach(arr,function(item){
            console.log(item);
            // item 是每一个 arr 的键值 如何实现forEach函数
        })
    </script>
</body>

</html>